class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> ret;
        // for (int i = 0; i < nums.size(); i++)
        // {
        //     for (int j = i + 1; j < nums.size(); j++)
        //     {
        //         if (nums[i] + nums[j] == target)
        //         {
        //             ret.push_back(i);
        //             ret.push_back(j);
        //         }
        //     }
        // }
        unordered_map<int, int> hash;
        // for (int i = 0; i < nums.size(); i++)
        //     hash.insert(make_pair(nums[i], i));

        //边找边放
        for (int i = 0; i < nums.size(); i++)
        {
            int search = target - nums[i];
            if (hash.count(search) != 0)
            {
                ret.push_back(i);
                ret.push_back(hash[search]);
                break;
            }

            hash.insert(make_pair(nums[i], i));

        }

        return ret;
    }
};